package org.xlp.mvc.annotation;

import org.xlp.mvc.exception.EnableExceptionHandler;
import org.xlp.mvc.exception.IExceptionHandler;
import org.xlp.utils.XLPCharsetUtil;

import java.lang.annotation.*;

/**
 * 组合控制器，包含以下注解功能
 * @see Controller
 * @see org.xlp.mvc.exception.EnableExceptionHandler
 * @see org.xlp.mvc.exception.ExceptionHandler
 * @see RequestCharset
 * @see ResponseCharset
 *
 * @author 徐龙平
 *         <p>
 *         2023-09-21
 *         </p>
 * @version 1.0
 *
 */
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在，在运行时可以通过反射获取到
@Target({ElementType.TYPE})//定义注解的作用目标**作用范围字段 （作用在类或接口上）
@Documented//说明该注解将被包含在javadoc中
@EnableExceptionHandler
public @interface CBController {
    /**
     * 描述
     */
    String description() default "";

    /**
     * 请求编码
     */
    String requestCharsetName() default "";

    /**
     * 响应编码
     */
    String responseCharsetName() default XLPCharsetUtil.UTF8;

    /**
     * 异常处理类
     */
    Class<? extends IExceptionHandler> exceptionHandlerClass() default IExceptionHandler.class;

    /**
     * 异常处理类全路径
     */
    String exceptionHandlerClassName() default "";
}
